package com.hanamaki.study.day02;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.util.List;

public class SeleniumElementOperation04 {

    //注册驱动
    WebDriver driver;

    // 导航对象
    WebDriver.Navigation navigation;

    @BeforeMethod
    public void setUp() {

        //注册本地火狐打开的位置
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");
        //初始化
        driver = new FirefoxDriver();

        navigation = driver.navigate();
    }

    @Test
    public void test() throws InterruptedException {
        /* 注册 浏览器打开的 资源路径 */
        driver.get("file:///C:/Users/Administrator/Desktop/testhtml/exam/House.html");

        /* 在网页中 操作 下拉式列表框 */
        /* 物业类别 */
        /* 可以通过  元素定位 找到某一个 下拉式列表中的选项进行点击     不推荐 */
//        driver.findElement(By.xpath("//option[@value='b']")).click();

        /* 使用 容器的方式来点击 下拉式菜单中的  元素 */
        /* 1. 通过  元素  来定位到  下拉式容器 */
        WebElement menu = driver.findElement(By.name("list1"));
        /* 2. 将获取的 下拉式菜单 添加到  select 容器中 来进行操作 */
        Select select = new Select(menu);
        /* 3. 通过 select 集合 可以操作 里面的每一项 值 */
        /* 3.1 可以通过 下拉式菜单中的  索引值来点击 选项   索引值从0开始*/
        select.selectByIndex(2);
        /* 3.2 可以通过  在页面中具体显示的信息 来选择 */
        select.selectByVisibleText("办公用房");
        /* 3.2 通过 标签中 value属性的值来选择 */
        select.selectByValue("a");


        /*  判断  下拉式菜单 是否 支持 多选  */
        boolean multiple = select.isMultiple();
        System.out.println(multiple == true ? "支持" : "不支持");

        /* 获取在下拉式列表中 选择的 第一个选项的文本值    如果启用了多选  就会默认选择第一个选项 */
        String text = select.getFirstSelectedOption().getText();
        System.out.println(text);

        List<WebElement> allSelectedOptions = select.getAllSelectedOptions();
        for (WebElement allSelectedOption : allSelectedOptions) {
            System.out.println(allSelectedOption.getText());
        }

    }


    @AfterMethod
    public void close() {
//        driver.close();
    }
}
